package com.dattplace.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.dattplace.model.ResultData;
import com.dattplace.model.User;
import com.dattplace.vo.MenuVo;
import com.dattplace.vo.UserVo;


public interface IUserService {

	/**
	 * 登陆
	 * @return
	 */
	UserVo login();

	/**
	 * 根据名称查询用户
	 * @param userName
	 * @return
	 */
	User queryUserByName(String userName);

	/**
	 * 获取用户菜单
	 * @param user
	 * @return
	 */
	List<MenuVo> getUserMeuns(User user);

	/**
	 * 保存用户
	 * @param list
	 */
	void saveUsers(List<User> list);

	/**
	 * 删除用户
	 * @param userId
	 */
	void deleteUserById(String userId);

	/**
	 * 删除用户登陆信息
	 * @param userId
	 */
	void cleanUserLoginInfo(String userId);

	/**
	 * 更新登陆信息
	 * @param accessToken
	 * @param lastLoginTime
	 * @param expireTime 
	 */
	void updateUserLoginInfo(String accessToken, Date lastLoginTime,long expireTime, String userId);

	/**
	 * 查询用户
	 * @param userId 用户id
	 * @return
	 */
	UserVo queryUserById(String userId);

	/**
	 * 修改密码
	 * @param userId
	 * @param createNewpassword
	 */
	void updatePassword(String userId, String createNewpassword);

	/**
	 * 根据手机号查询用户
	 * @param mobile
	 * @return
	 */
	User queryUserByPhone(String mobile);

	/**
	 * 用户注册
	 * @param user
	 * @return 
	 */
	ResultData<Object> register(User user);

	/**
	 * 更新用户信息
	 * @param userId
	 * @param property
	 */
	void updateUserProperty(String userId, Map<String, Object> property);

	List<UserVo> queryUserList(int pageNo, int pageSize, String keyWord);

	long queryAllUserCount(String keyWord);

	void deleteUser(String userId);

	void updateUserByUserId(String userId, Map<String, Object> map);

	void saveUser(UserVo userVo);

	User queryUserByToken(String token);

}
